/**
 * 导入模块
 */
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript';

/**
 * 导入 Vue 的 ESLint 插件
 */
import pluginVue from 'eslint-plugin-vue';

/**
 * 导入全局忽略规则
 */
import { globalIgnores } from 'eslint/config';

/**
 * 导入不同环境下的全局变量定义
 */
import globals from 'globals';

/**
 * 使用 defineConfigWithVueTs 导出 ESLint 配置
 */
export default defineConfigWithVueTs(
  /**
   * 基础配置对象
   */
  {
    name: 'app/files-to-lint',
    files: ['**/*.{ts,mts,tsx,vue}'],
  },

  /**
   * 全局忽略规则
   */
  globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),

  /**
   * 语言选项
   */
  {
    languageOptions: {
      // 指定浏览器环境下的全局变量
      globals: globals.browser,
    },
  },

  /**
   * Vue 基础规则配置
   */
  pluginVue.configs['flat/essential'],

  /**
   * 推荐的 Vue + TypeScript 配置
   */
  vueTsConfigs.recommended,

  {
    /**
     * 规则配置
     */
    rules: {
      'vue/multi-word-component-names': 'off',
      '@typescript-eslint/no-unused-vars': 'off',
      '@typescript-eslint/no-empty-object-type': 'off',
      '@typescript-eslint/no-explicit-any': 'off',
      'no-unused-vars': 'off',
    },
  },
);
